package com.zqq.baselibrary.common

import android.annotation.SuppressLint
import android.app.Application
import android.content.Context
import com.alibaba.android.arouter.launcher.ARouter
import com.zhuanju.core.utils.ZLog
import com.zqq.baselibrary.BuildConfig
import com.zqq.baselibrary.injection.component.AppComponent
import com.zqq.baselibrary.injection.component.DaggerAppComponent
import com.zqq.baselibrary.injection.module.AppModule

/**
 * Application 基类
 * 在这个里面无法调用Message的JPush
 * 所以定义一个MainApplication继承自此
 * @author zqq on 2018/7/26
 */
open class BaseApplication : Application() {

    lateinit var appComponent: AppComponent

    //全局伴生对象
    companion object {
        @SuppressLint("StaticFieldLeak")
        lateinit var context: Context
    }

    override fun onCreate() {
        super.onCreate()
        initAppInjection()

        context = this

        if (BuildConfig.DEBUG) {
            ARouter.openLog()
            //开启调试模式(如果在InstantRun模式下运行，必须开启调试模式！
            // 线上版本需要关闭,否则有安全风险)
            ARouter.openDebug()

            ZLog.isDebug = true
        }
        ARouter.init(this)
    }

    /**
     * 实例化AppComponent
     */
    private fun initAppInjection() {
        appComponent = DaggerAppComponent.builder()
                .appModule(AppModule(this))
                .build()        //返回的的是AppComponent说明实例化AppComponent成功了
    }

}